package modelo;

public class AlgoTank extends Personaje implements MoviblePorTeclado {

	private final int VELOCIDAD_DE_ALGOTANK = 10;
	
	public AlgoTank(Coordenada posicionInicial, Laberinto elLaberinto) {
		super(posicionInicial, elLaberinto);
		setVelocidad(VELOCIDAD_DE_ALGOTANK);
	}
	
	public boolean moverseArriba (boolean ejecutarMovimiento) {
		return moverseHacia(calcularArriba(), ejecutarMovimiento);
	}

	public boolean moverseAbajo (boolean ejecutarMovimiento) {
		return moverseHacia(calcularAbajo(), ejecutarMovimiento);
	}

	public boolean moverseADerecha (boolean ejecutarMovimiento) {
		return moverseHacia(calcularDerecha(), ejecutarMovimiento);
	}

	public boolean moverseAIzquierda (boolean ejecutarMovimiento) {
		return moverseHacia(calcularIzquierda(), ejecutarMovimiento);
	}

	private boolean moverseHacia (Coordenada hasta, boolean ejecutarMovimiento) {
		/* Evaluo si puedo avanzar */
		Coordenada hacia = puedePasarPor(hasta);
		
		if (hacia!=null) {
			if(ejecutarMovimiento) {
			moverse(hacia);
			laberinto.comer(hacia);
			return posicion.equals(hacia);
			}
			else return true;
		}
		else
			return false;
	}
	
	public void vivir(){
		
	}
}
